to remove/makeJAGSmodel2.R

makeJAGSmodel2 <- function(doselink,metareg,beta.effects,consistency,class.effect){
    if(consistency){
        dose.str <- "d[i, k] <- (b1[t[i, k]] * dose1[i, k]) - (b1[t[i, 1]] * dose1[i, 1]) + (b2[t[i, k]] *dose2[i, k]) - (b2[t[i, 1]] * dose2[i,1])"
        # Absolute effect
        abs.eff <- "
        for (i in 1:ns) { ## for each study
        rr[i,1] ~ dbinom(p0[i],nn[i,1])
        logit(p0[i]) <- z[i]
        z[i] ~ dnorm(Z, prec.z)
           }
        # priors
      Z ~ dnorm(0, 0.001)
      prec.z <- 1/v.z
      v.z <- sigma.z * sigma.z
      sigma.z ~ dunif(0,10) #!! sprintf not accept dollar sign
      for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
       for( j in 1:nd.new[k]){
       OR[j,k] <- exp(b1[k]*new.dose[k,j]+  b2[k]*f.new.dose[k,j])
       odds.drug[j,k] <- OR[j,k]*exp(Z)
       p.drug[j,k] <- odds.drug[j,k]/(1+odds.drug[j,k])
          }
        }
        "
    }else{
        dose.str <- "d[i,k] <-  beta1[t[i,1],t[i,k]]*dose1[i,k] + beta2[t[i,1],t[i,k]]*dose2[i,k]"
        prior.b1.str <- "
  for (i in 1:ncomp){
  beta1[t1[i],t2[i]] <- bb1[t1[i],t2[i]]
      bb1[t1[i],t2[i]] ~ dnorm(0,0.001)
  }"
        prior.b2.str <- "
  for (i in 1:ncomp){
  beta2[t1[i],t2[i]] <- bb2[t1[i],t2[i]]
      bb2[t1[i],t2[i]] ~ dnorm(0,0.001)
  }"
      }

if (metareg) {
  metareg.str <- "+ (gamma[t[i,k]] - gamma[t[i,1]])*cov[i]"
  prior.b.str <- "
    gamma[ref.index] <- 0
  for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
    gamma[k] ~ dnorm(g,prec.g)

  }
    g ~dnorm(0,0.001)
tau.g~dunif(0,5)      # common standard deviation is given a vague prior
prec.g<-pow(tau.g,-2) # common precision in RE-NMA model
    "

}else{metareg.str <- ""
prior.b.str<- ""
}


  if (beta.effects == "fixed"){
    beta1.effect <- "
     for(i in 1:ns){
     beta1[i,ref.index] <- 0
   for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
    beta1[i,k] <- b1[k]
 }}
    "
    beta2.effect <- "
     for(i in 1:ns){
     beta2[i,ref.index] <- 0
   for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
     beta2[i,k] <- b2[k]
   }
    }
    "
  }


  if (beta.effects == "random"){
    beta1.effect <- "
    for(i in 1:ns){
    beta1[i,ref.index] <- 0
  for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
    beta1[i,k] ~ dnorm( b1[k],prec.beta)
  }
    }
    tau.beta~dunif(0,5)      # common standard deviation is given a vague prio
    prec.beta<-1/pow(tau.beta,2) # common precision in RE-NMA model
    "
    beta2.effect <- "
    for(i in 1:ns){
    beta2[i,ref.index] <- 0
  for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
    beta2[i,k] ~ dnorm(b2[k],prec.beta)
  }
    }"
  }

link.str <- "logit(p[i,k]) <- u[i] + delta[i,k]"
link.str <- paste0(link.str, metareg.str)

if(consistency){

  code.str <- sprintf("
    #model{

b1[ref.index] <- 0
  b2[ref.index] <- 0
    for (i in 1:ns) {
      delta[i, 1] <- 0
      #d[i, 1] <- 0.00000E+00
      u[i] ~ dnorm(0, 0.001)
      for (k in 1:na[i]) {
        r[i, k] ~ dbin(p[i, k], n[i, k])
        %s
        rhat[i, k] <- p[i, k] * n[i, k]
        dev[i, k] <- 2 * (r[i, k] * (log(r[i, k]) - log(rhat[i,k])) + (n[i,k] - r[i, k]) * (log(n[i, k] - r[i,k]) - log(n[i, k] - rhat[i, k])))
      }
      resdev[i] <- sum(dev[i, 1:na[i]])
      for (k in 2:na[i]) {
%s # dose-response fun
delta[i, k] <- d[i, k]
      }
    }

for (k in c(1:(ref.index - 1), (ref.index + 1):ndrugs)) {
      b1[k] ~ dnorm(0.00000E+00, 0.001)
      b2[k] ~ dnorm(0.00000E+00, 0.001)
    }
%s # prior for gamma
%s # absolute effect
# heterogeniety across trials

tau~dunif(0,1)      # common standard deviation is given a vague prior
precd<-pow(tau,-2) # common precision in RE-NMA model
totresdev <- sum(resdev[])
#}
  ",link.str,dose.str, prior.b.str,abs.eff)


}else{
  code.str <- sprintf("

 for(i in 1:ns){ # Run Through all ns trials

    w[i,1] <-0
    delta[i,1]<-0
    u[i] ~ dnorm(0,0.001)

    for (k in 1:na[i]){
      r[i,k] ~ dbin(p[i,k],n[i,k])
      logit(p[i,k])<-  theta[i,k]
      theta[i,k] <- u[i] + delta[i,k] # Trial specific u + EMaxModel from RE
    }

    for (k in 2:na[i]){
      %s # linkstr
      delta[i,k] ~ dnorm(d[i,k],prec)
    }
  }

  %s # prior for b1
  %s # prior for b2
  # heterogeniety across trials
  tau~dunif(0,5)      # common standard deviation is given a vague prior
  prec<-1/pow(tau,2) # common precision in RE-NMA model

  ",dose.str,prior.b1.str,prior.b2.str)
}
jagsmodelDRnetmeta <- (eval(parse(text=paste0('jagsmodelDRnetmeta <- function(){',code.str,'}'))))
return(jagsmodelDRnetmeta)
}
htx-r/doseresNMA documentation built on Jan. 28, 2021, 5:32 a.m.